package kr.hkit.PowerJava.chapter23;

class Counter {
	private int value;
	public void increment() {value++;}
	public void decrement() {value--;}
	public void prnCounter() {System.out.println(value);}
}

class SharedThread extends Thread {
	Counter sharedCounter;

	public SharedThread(Counter sharedCounter) {
		this.sharedCounter = sharedCounter;
	    start();
	}

	@Override
	public void run() {
		int i = 0;
		while (i < 20000) {
			sharedCounter.increment();
			sharedCounter.decrement();
			if (i % 40 == 0) {
				sharedCounter.prnCounter();
				try {
					sleep((int) (Math.random() * 2));
				} catch (InterruptedException e) {}
			}
			i++;
		}
	}

}

public class CounterTest {
	public static void main(String[] args) {
		Counter c = new Counter();

		new SharedThread(c);
		new SharedThread(c);
		new SharedThread(c);
		new SharedThread(c);
        
	}
}
